/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package es.fpsampayo.fin2006.importacionficheros;

import es.fpsampayo.fin2006.ImportarFichero;
import es.fpsampayo.recursos.Conexion;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author fran
 */
public class ImportarFicheroFIN2006 implements Runnable {
    
    private String concello;
    private int anio;
    private File file;
    private boolean salir = false;
    
    public void setAnio(int anio) {
        this.anio = anio;
    }

    public void setConcello(String concello) {
        this.concello = concello;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public void setSalir(boolean salir) {
        this.salir = salir;
    }
    
    public ImportarFicheroFIN2006(String concello, int anio, File file) {
        this.concello = concello;
        this.anio = anio;
        this.file = file;
    }
    
    public void importarFin(File file) {

        FileReader fr = null;
        BufferedReader br = null;

        try {
            // TODO add your handling code here:
            String s;
            int i = 0;
            int j = 0;
            int totalReg = contarRegistros(file);
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            Conexion conexion = new Conexion();
            while ((s = br.readLine()) != null) {
                if (salir == true){
                    break;
                }
                if (s.substring(0, 2).equals("11")) {
                    conexion.insertar(importarRegistro11(s));
                    i = i + 1;
                }
                /*else if(s.substring(0, 2).equals("12")){

                }
                else if(s.substring(0, 2).equals("13")){

                }*/

                j = j + 1;
                ImportarFichero.setTextoProgeso(j, totalReg);
                int progreso = (j * 100) / totalReg;
                ImportarFichero.setBarProgresoValue(progreso);

            }
            if (salir == false){
                JOptionPane.showMessageDialog(null, "Se han insertado " + i + " registros en la Base de Datos.");
                JOptionPane.showMessageDialog(null, "Se ha terminado la operación correctamente.");
            }
            conexion.Desconectar();


        } catch (IOException ex) {
            Logger.getLogger(ImportarFicheroFIN2006.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fr.close();
            } catch (IOException ex) {
                Logger.getLogger(ImportarFichero.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    private int contarRegistros(File file) throws IOException {
        FileReader fr = null;
        BufferedReader br = null;
        int i = 0;

        try {
            fr = new FileReader(file);
            br = new BufferedReader(fr);
            while (br.readLine() != null) {
                i = i + 1;
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ImportarFichero.class.getName()).log(Level.SEVERE, null, ex);
        }
        return i;
    }

    private String importarRegistro11(String s) {

        String parcela = s.substring(30, 44);
        String codigo_via = s.substring(153, 158);
        String sigla = s.substring(158, 163);
        String nombre = s.substring(163, 188);

        String sql = "INSERT INTO public.parcelas(id_parcela,cod_via,sigla_via,nombre) VALUES (\'"
                + parcela + "\',\'"
                + codigo_via + "\',\'"
                + sigla + "\',\'"
                + nombre + "\');";
        return sql;
    }

    @Override
    public void run() {
        while (salir == false){
            importarFin(file);
        }
    }
}
